Christoph Wolk [Mon, 23 Jun 2025 20:03:27 +0000 (20:03 +0000)]
[PATCH] applets/kicker: resolve non-existing files to their url
Kicker's PAStats-based favorites do some normalization to, among others,
resolve symlinked files to their resolved path to reduce duplicates.
However, if the file doesn't exist, it essentially just gives up. This
is a problem when trying to remove favorites that were deleted: while
the un-favoriting in PAStats succeeds, kicker can't remove it from its
own model because it can't identify the file by its url if it doesn't
exist. So removed favorites confusingly stick around until the next
plasmashell restart.
Instead, we take the base url in that case - as the entries already have
gone through the process, the url is their real url anyway.
Nate Graham [Fri, 20 Jun 2025 14:38:03 +0000 (08:38 -0600)]
[PATCH] kcms/feedback: remove little hover icons
These icons have an unclear purpose since they have no text, and the
same icons are not repeated elsewhere in the KCM's UI to provide some
clue as to their meaning or purpose. They only appear on hover and
can't be accessed on touch at all; let's just remove them to prevent
user confusion.
The backend code providing icons in the model is preserved in case we
ever want to do something else with icons in the future.
Akseli Lahtinen [Thu, 19 Jun 2025 17:46:12 +0000 (20:46 +0300)]
[PATCH] Klipper: Remove local Configure Klipper action
This action would cause the shortcuts configuration menu to show
both local and global shortcuts, which makes no sense due to
Klipper being a globally accessed application.
This action is only used in cases where Klipper will be it's own
application with a normal window, similar to applications like Dolphin,
Kate, etc.. But Klipper is never used this way.
Currently only place where you can use this action is the configuration
menu itself, where it does nothing, since the menu is already open.
So let's just remove it. This also makes sure users do not accidentally
select "Shortcut/Alternate" instead of "Global Shortcut/Alternate"
for their shortcuts. See the related bug for context.
Christoph Wolk [Thu, 5 Jun 2025 18:33:29 +0000 (18:33 +0000)]
[PATCH] applets/kicker: fix filenames containing # in history
Kicker takes the resource name as provided by PlasmaActivities.Stats and
interprets it as an URL, setting the 'file' url scheme if necessary.
This fails when the filenames contain a '#' character, as QUrl will
interpret them as url fragments if not percent-encoded (which they are
not for local files, but are for remote urls). This makes display and
opening of such files fail in both Kicker and Kickoff.
Instead, we test whether it's an absolute path (the local history
entries are) and if so, use QUrl.fromLocalFile to get the correct url.
This is also what PlasmaActivities.Stats does in ResultSet (which is
what the Task Manager uses, so everything works there already, but we
want a real model here).
Christoph Wolk [Thu, 5 Jun 2025 15:18:08 +0000 (15:18 +0000)]
[PATCH] libtaskmanager: fix "move to activity" when on almost all activities
Using the task manager to move windows to other activities works in
most circumstances, but fails under one condition: when a window is
already on all activities except the one that is being moved to, the
window instead ends up on all activities, and has to be moved to that
activity again to be only on that workspace. This is usually a rare edge
case, but very commonly happens when using exactly two activities,
namely always when moving a window from one activity to the other.
This is the result of some unusual api implementation details of
activities: a window being on all activities is represented by having
the activity list for that window empty. Moving a window to a different
activity in libtaskmanager is done by first adding the window to the
activity list using the plasma wayland protocol. If the list on the kwin
side is now full, it'll flip it over into the empty list (i.e. all
activities). Next libtaskmanager tries to remove the other activities
from the list, this fails because the list is already empty (and kwin
doesn't handle this because "this use case is not important enough to
handle here").
Luckily enough, this use case is trivially easy to handle here, all we
need to do is remove existing activities first, then add the new one.
This will also briefly put it on all activities, but adding new
activities works (and puts it only on that activity), it's only
removing them that fails.
Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
Gbp-Pq: Name upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch
Christoph Wolk [Tue, 3 Jun 2025 21:04:21 +0000 (21:04 +0000)]
[PATCH] containmentlayoutmanager: don't enter edit mode without activefocus
ItemContainer enters edit mode on pressAndHold for desktop widgets not
set to immutable. This causes a problem with menus that open on press -
the container will not receive further mouse events that now go to the
menu, so it still considers itself pressed and unmoved the whole time,
and goes into edit mode after a while, exiting the menu. This makes
on-press menus in desktop widgets borderline unusable, and even if the
user manages to be quick enough to activate the desired entry during the
pressAndHold duration, it'll still enter edit mode unless the user also
does a full click on the applet afterward.
We can circumvent this particular case relatively easily by listening to
the container's activefocus changes - the popup opening does not cause
a focusOut event, but it does take activeFocus away from the container,
so if we stop the timer in that case, it works out as it should.
Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
Gbp-Pq: Name upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch
Vlad Zahorodnii [Wed, 28 May 2025 13:36:20 +0000 (13:36 +0000)]
[PATCH] shell: Rearrange the teardown order
At the moment, the ShellCorona is destroyed after the QApplication object.
Destroying something after the application object can lead to
unexpected results because most of the code is written with an assumption
that the app object and the associated objects, e.g. the qpa, are still
valid when the cleanup code runs.
This change puts the ShellCorona on the stack so the destruction order
looks as follows:
Nate Graham [Thu, 22 May 2025 15:06:52 +0000 (09:06 -0600)]
[PATCH] libtaskmanager: show Comment for launcher icons when appropriate
Right now, launcher icons get a caption equal to the app's GenericName,
if one is set in the metadata. If not, it gets no caption.
This differs from what Kicker and Kickoff Manager do: a more complex
behavior to show the Comment if the app has no GenericName or if its
GenericName is equal to its Name. Let's replicate the same logic here.
Christoph Wolk [Sat, 17 May 2025 07:38:00 +0000 (07:38 +0000)]
[PATCH] applets/systemmonitor: skip configure button on sensorless faces
Some faces don't need sensors as they have their data included already,
namely Process Table and Application Table. The applet does not take
this into account and keeps showing the "Configure" button.
Instead, don't show that button if one of these faces is the current
face.
Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
Gbp-Pq: Name upstream_b9bc83c6_applets-systemmonitor-skip-configure-button-on-sensorless-faces.patch
The fullRepresentation has a little efficiency trick: it unloads the
model while it is not expanded, so the ListView does not need to be
updated while it is not visible. In general this is fine, but it
interacts very badly with attempts to put the fullRepresentation
directly on the desktop (or in a very large panel) and the auto-closing
functionality of the notification applet. When the notification history
ever becomes empty, it tries to close the fullRepresentation by setting
expanded to false, which by itself does not do any harm either (the
fullRepresentation stays a fullRepresentation), but it does unload the
model, so the history never updates again (unless the user manually
resizes it to become too small for the fullRepresentation then back
again, which resets it to its proper expanded state).
Instead, we modify closePlasmoid() to only set expanded to false if the
widget is below either switchWidth or switchHeight.
BUG: 503815
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_142caad0_applets-notification-fix-fullRepresentation-only-widgets.patch
[PATCH] Warn user about full storage in any device/partition
Currently, we only check for home and / partitions to be full
when warning user. With this commit we instead check for all
partitions / devices that are mounted and not read only.
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
Gbp-Pq: Name upstream_9e0939c1_Warn-user-about-full-storage-in-any-device-partition.patch
Notification bodies have their width constrained by the notification and
the horizontal scrollbar forced off, but they can still be scrolled with
a horizontal wheel, touchpad, or similiar. This is surprising and
pointless.
Instead explicitly set the contentWidth, which is otherwise ultimately
based on the underlying TextEdit (and that's the width it would have on
a single line without wrapping).
Gbp-Pq: Name upstream_2c27c9db_applets-notifications-don-t-allow-horizontal-scrolling.patch
Han Young [Sat, 22 Feb 2025 15:13:19 +0000 (23:13 +0800)]
[PATCH] kcm_regionandlang: add locale C to mapping and always set LANG and LC_*
BUG: 500432
Add locale C to glibc mappings so that locale C is actually saved to config file
Also set LC_* whenever LANG is set, this ensure LC_* are always up to date. In previous logic, LC_* can become out of sync if user change LANG to something else than changed it back.
Gbp-Pq: Name upstream_c9ee2931_kcm-regionandlang-add-locale-C-to-mapping-and-always-set-LANG-and-LC-.patch
Right now there are two problems:
1. Deleting a logged-in user shows no warning about this.
2. Asking to delete the files of a logged-in user fails silently
(AccountsService simply won't do it).
This commit solves both problems: now the user sees a warning dialog
when they try to delete another logged-in user, and it also prevents
them from trying to delete a logged-in user's files, instead redirecting
them to just delete the account but not the files.
To achieve this, I needed to change what the `loggedIn` property does,
because previously it was inaccurate, returning whether the queried user
is the currently logged-in user. Now it returns whether the quaried user
is logged in, and I added a new `isMe` property to hold whether the
queried user is the currently logged-in user.
BUG: 495494
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_9abfdd26_kcm-users-refine-deleting-logged-in-user-UX.patch
[PATCH] applets/appmenu: Fix displaying menu of the previous active window
We need to break the DBusMenuImporter::menuUpdated() signal connection
when the active window changes. Otherwise, it's possible that the
menuUpdated signal will be emitted and the menu will be marked as
available.
BUG: 473714
Gbp-Pq: Name upstream_73875471_applets-appmenu-Fix-displaying-menu-of-the-previous-active-window.patch
Tomislav Pap [Mon, 24 Mar 2025 23:23:07 +0000 (23:23 +0000)]
[PATCH] Fix Scroll Wheel issue in AllApps submenu of Application Dashboard
Scroll with mouse wheel was problematic in AllApps subsection. It worked
partially, abruptly stopping when hovering over app icons, or just
during mouse wheel scrolling.
The problem is that QQuick WheelInterceptor::findwheelArea() never entered
into its if statement because there are 3 children elements of QML parent,
and their z axis values are 1, 0, 0 respectfully.
BUG: 486481
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_4f9b1a69_Fix-Scroll-Wheel-issue-in-AllApps-submenu-of-Application-Dashboard.patch
Christoph Wolk [Sat, 17 May 2025 07:38:00 +0000 (07:38 +0000)]
[PATCH] applets/systemmonitor: skip configure button on sensorless faces
Some faces don't need sensors as they have their data included already,
namely Process Table and Application Table. The applet does not take
this into account and keeps showing the "Configure" button.
Instead, don't show that button if one of these faces is the current
face.
Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
Gbp-Pq: Name upstream_b9bc83c6_applets-systemmonitor-skip-configure-button-on-sensorless-faces.patch
Nate Graham [Thu, 22 May 2025 14:25:05 +0000 (08:25 -0600)]
[PATCH] Fix cell height calc in resize handle
Correct typo using cellWidth() instead of cellHeight() for
minimum height calculation during vertical resizing. Ensures
proper cell-aligned sizing behavior.
Kai Uwe Broulik [Tue, 20 May 2025 16:00:15 +0000 (16:00 +0000)]
[PATCH] applets/notifications: Don't set a parent for WidgetsAskUserActionHandler
The notification popup gets destroyed as soon as the user clicked the menu item,
so the handler is destroyed (curiously still leaving the KMessageDialog up) and
askUserDeleteResult is never emitted.
Co-authored-by: Kai Uwe Broulik <kde@privat.broulik.de>
Gbp-Pq: Name upstream_41a554e6_applets-notifications-Don-t-set-a-parent-for-WidgetsAskUserActionHandler.patch
Fushan Wen [Fri, 16 May 2025 02:03:13 +0000 (10:03 +0800)]
[PATCH] libnotificationmanager: fix critical notifications not showing when Do not disturb is active
The filter only checks if `WasAddedDuringInhibitionRole` is true but
ignores the urgency flag, which is used to show critical notifications
when Do not disturb is active.
Akseli Lahtinen [Mon, 5 May 2025 18:14:08 +0000 (21:14 +0300)]
[PATCH] colorsapplicator: Don't allow extended RGB from OKLabToLinearSRGB
When reading the rgb values in OKLabToLinearSRGB, there is a chance,
when colors are tinted, for QColor::fromRgbF to return Extended RGB
colors, which can invert.
Read more at
https://doc.qt.io/qt-6/qcolor.html#the-extended-rgb-color-model
Instead, just make sure we always return regular RGB values.
The fullRepresentation has a little efficiency trick: it unloads the
model while it is not expanded, so the ListView does not need to be
updated while it is not visible. In general this is fine, but it
interacts very badly with attempts to put the fullRepresentation
directly on the desktop (or in a very large panel) and the auto-closing
functionality of the notification applet. When the notification history
ever becomes empty, it tries to close the fullRepresentation by setting
expanded to false, which by itself does not do any harm either (the
fullRepresentation stays a fullRepresentation), but it does unload the
model, so the history never updates again (unless the user manually
resizes it to become too small for the fullRepresentation then back
again, which resets it to its proper expanded state).
Instead, we modify closePlasmoid() to only set expanded to false if the
widget is below either switchWidth or switchHeight.
BUG: 503815
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_142caad0_applets-notification-fix-fullRepresentation-only-widgets.patch
[PATCH] Warn user about full storage in any device/partition
Currently, we only check for home and / partitions to be full
when warning user. With this commit we instead check for all
partitions / devices that are mounted and not read only.
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
Gbp-Pq: Name upstream_9e0939c1_Warn-user-about-full-storage-in-any-device-partition.patch
Notification bodies have their width constrained by the notification and
the horizontal scrollbar forced off, but they can still be scrolled with
a horizontal wheel, touchpad, or similiar. This is surprising and
pointless.
Instead explicitly set the contentWidth, which is otherwise ultimately
based on the underlying TextEdit (and that's the width it would have on
a single line without wrapping).
Gbp-Pq: Name upstream_2c27c9db_applets-notifications-don-t-allow-horizontal-scrolling.patch
Han Young [Sat, 22 Feb 2025 15:13:19 +0000 (23:13 +0800)]
[PATCH] kcm_regionandlang: add locale C to mapping and always set LANG and LC_*
BUG: 500432
Add locale C to glibc mappings so that locale C is actually saved to config file
Also set LC_* whenever LANG is set, this ensure LC_* are always up to date. In previous logic, LC_* can become out of sync if user change LANG to something else than changed it back.
Gbp-Pq: Name upstream_c9ee2931_kcm-regionandlang-add-locale-C-to-mapping-and-always-set-LANG-and-LC-.patch
Right now there are two problems:
1. Deleting a logged-in user shows no warning about this.
2. Asking to delete the files of a logged-in user fails silently
(AccountsService simply won't do it).
This commit solves both problems: now the user sees a warning dialog
when they try to delete another logged-in user, and it also prevents
them from trying to delete a logged-in user's files, instead redirecting
them to just delete the account but not the files.
To achieve this, I needed to change what the `loggedIn` property does,
because previously it was inaccurate, returning whether the queried user
is the currently logged-in user. Now it returns whether the quaried user
is logged in, and I added a new `isMe` property to hold whether the
queried user is the currently logged-in user.
BUG: 495494
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_9abfdd26_kcm-users-refine-deleting-logged-in-user-UX.patch
[PATCH] applets/appmenu: Fix displaying menu of the previous active window
We need to break the DBusMenuImporter::menuUpdated() signal connection
when the active window changes. Otherwise, it's possible that the
menuUpdated signal will be emitted and the menu will be marked as
available.
BUG: 473714
Gbp-Pq: Name upstream_73875471_applets-appmenu-Fix-displaying-menu-of-the-previous-active-window.patch
Tomislav Pap [Mon, 24 Mar 2025 23:23:07 +0000 (23:23 +0000)]
[PATCH] Fix Scroll Wheel issue in AllApps submenu of Application Dashboard
Scroll with mouse wheel was problematic in AllApps subsection. It worked
partially, abruptly stopping when hovering over app icons, or just
during mouse wheel scrolling.
The problem is that QQuick WheelInterceptor::findwheelArea() never entered
into its if statement because there are 3 children elements of QML parent,
and their z axis values are 1, 0, 0 respectfully.
BUG: 486481
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_4f9b1a69_Fix-Scroll-Wheel-issue-in-AllApps-submenu-of-Application-Dashboard.patch
[ Aurélien COUDERC ]
* New upstream release (6.3.5).
- Notification: Escape lonely < and > symbols. (kde#502106)
- Calendar: Move event indicator above main label.
- Appelts/notifications: Fix Notifications positions. (kde#500192,
kde#498599, kde#491217, kde#502160)
- Applets/notifications: improve paddings again.
- Multiscreen: fix an incorrect assert in screenInvariants. (kde#494616)
* Relax inter-plasma versioned dependency constraint so we can upload
only 6.3.5 packages that have actual code changes.
* Drop backported patch now part of the upstream release.
* Backport upstream commits scheduled for 6.3.6:
- Fix entirely wrong colours when enabling "Tint all colours with accent
colour". (kde#503394)
- Remove pointless "mount" action for audio CDs and blank optical media.
(kde#503999)
- libnotificationmanager: fix critical notifications not showing when Do
not disturb is active.
- components/sessionprivate: fix a potential crash in SessionsModel.
- Fix deleting downloaded files from the notifications. (kde#504385)
- Fix cell height calculation during vertical resizing.
- klipper: make "Add Actions" dialog only window-modal to avoid blocking
plasmashell completely. (kde#501938)
* Backport other upstream commits:
- Fix lockscreen showing a placeholder instead of the real multimedia
player name in some multi-player setups.
- Fix Scroll Wheel issue in the All Applications section of the launcher.
(kde#486481)
- Fix implementation of the StatusNotifierItem spec to support context
menu on left click in the system tray.
- Never use scientific notation even for big numbers in notifications.
(kde#422166)
- Fix global menu sometimes showing menu items from non-active app.
(kde#473714)
- Fix issue in sorting users list to put the logged in user first.
- Prevent trying to delete the logged in user and failing. (kde#495494)
- Make selecting the C locale in regional options actually work.
(kde#500432)
- Fix duplicate optical devices in disks and devices applet. (kde#495140)
- Disable pointless and surprising horizontal scrolling of notifications
contents.
- Warn users about full storage not just on / and /home.
- Fix incorrect wallpaper preview when using screens with widely different
aspect ratios. (kde#483097)
- Fix OSD not properly displaying RTL languages. (kde#503255)
- Fix Notifications widget added to the desktop not showing new
notifications. (kde#503815)
- Fix “Process Table” visualization for blank System Monitor sensor
widgets to no longer incorrectly makes them think they’re in need of
configuration the next time you restart Plasma or the system. (kde#504335)
* Team upload.
* Bump Standards-Version to 4.7.2, no changes required.
* CI: simplify/improve config.
* Drop the private symbols of Wayland interfaces, which are hidden when
generated using Qt 6.8. (Closes: #1099454)
* Update/simplify lintian overrides.
[ Aurélien COUDERC ]
* New upstream release (6.3.0).
* Update build-deps and deps with the info from cmake.
* Update symbols from build for 6.3.0.
* Release to unstable.
[ Aurélien COUDERC ]
* New upstream release (6.2.4).
* Update build-deps and deps with the info from cmake.
* Remove obsolete conf file /etc/xdg/autostart/klipper.desktop. (Closes:
#1088962)